package dtime

import (
	"fmt"
	"time"
)

/*
SetTime 修改时间
*/
func (d DefaultDtime) SetTime(t time.Time) {
	//TODO implement me
	d.t = t
}

/*
GetTimeYMD 获取指定时间的字符串年月日  1990-01-04
*/
func (d DefaultDtime) GetTimeYMD() string {
	//TODO implement me
	return fmt.Sprintf("%d-%d-%d", d.t.Year(), d.t.Month(), d.t.Day())
}

/*
GetTimeYMDDiagonal 获取指定时间的字符串年月日  1990/01/04
*/
func (d DefaultDtime) GetTimeYMDDiagonal() string {
	//TODO implement me
	return fmt.Sprintf("%d/%d/%d", d.t.Year(), d.t.Month(), d.t.Day())
}

/*
GetBeforeTimeYMD 获取指定时间的过去时间字符串年月日  1990-01-04
*/
func (d DefaultDtime) GetBeforeTimeYMD(years int, months int, days int) string {
	//TODO implement me
	now := d.t.AddDate(-years, -months, -days)
	return fmt.Sprintf("%d-%d-%d", now.Year(), now.Month(), now.Day())
}

/*
GetBeforeTimeYMDDiagonal 获取指定时间的过去时间字符串年月日  1990/01/04
*/
func (d DefaultDtime) GetBeforeTimeYMDDiagonal(years int, months int, days int) string {
	//TODO implement me
	now := d.t.AddDate(-years, -months, -days)
	return fmt.Sprintf("%d/%d/%d", now.Year(), now.Month(), now.Day())
}

/*
GetAfterTimeYMD 获取指定时间的将来时间字符串年月日  1990-01-04
*/
func (d DefaultDtime) GetAfterTimeYMD(years int, months int, days int) string {
	//TODO implement me
	now := d.t.AddDate(years, months, days)
	return fmt.Sprintf("%d-%d-%d", now.Year(), now.Month(), now.Day())
}

/*
GetStringTime 获取指定时间的时间字符串年月日  1990-01-04
*/
func (d DefaultDtime) GetStringTime(t time.Time) string {
	//TODO implement me
	return fmt.Sprintf("%d-%d-%d", t.Year(), t.Month(), t.Day())
}

/*
GetTimeYMDHMS 获取指定时间的时间字符串年月日  1990-01-04 11:11:11
*/
func (d DefaultDtime) GetTimeYMDHMS() string {
	//TODO implement me
	return fmt.Sprintf("%d%d%d%d%d%d", d.t.Year(), d.t.Month(), d.t.Day(), d.t.Hour(), d.t.Minute(), d.t.Second())
}

func (d DefaultDtime) GetFirstDayOfMonth() string {
	// 获取当前时间
	now := time.Now()

	// 获取当前月份的第一天
	firstDayOfMonth := time.Date(now.Year(), now.Month(), 1, 0, 0, 0, 0, now.Location())

	// 格式化日期为字符串
	// 使用 "2006-01-02" 作为格式化模板
	dateString := firstDayOfMonth.Format("2006-01-02")

	return dateString
}
